<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<!-- Standard Head Part -->
<head>
<title>NUnit - SetupFixture</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta http-equiv="Content-Language" content="en-US">
<link rel="stylesheet" type="text/css" href="nunit.css">
<link rel="shortcut icon" href="favicon.ico">
</head>
<!-- End Standard Head Part -->

<body>

<!-- Standard Header for NUnit.org -->
<div id="header">
  <a id="logo" href="http://www.nunit.org"><img src="img/logo.gif" alt="NUnit.org" title="NUnit.org"></a>
  <div id="nav">
    <a href="http://www.nunit.org">NUnit</a>
    <a class="active" href="index.html">Documentation</a>
  </div>
</div>
<!-- End of Header -->

<div id="content">

<script language="JavaScript" src="codeFuncs.js" ></script> <!-- Do it this way for IE -->

<h3>SetUpFixtureAttribute (NUnit 2.4)</h3>

<p>This is the attribute that marks a class that contains the one-time
	setup or teardown methods for all the test fixtures under a given
	namespace. The class may contain at most one method marked with the
	SetUpAttribute and one method marked with the TearDownAttribute.</p>
	
<p>There are a few restrictions on a class that is used as a setup fixture.
	<ul>
		<li>
			It must be a publicly exported type or NUnit will not see it.</li>
		<li>
			It must have a default constructor or NUnit will not be able to construct it.</li>
	</ul>
</p>

<p>The SetUp method in a SetUpFixture is executed once before any of the fixtures
contained in its namespace. The TearDown method is executed once after all the 
fixtures have completed execution. In the examples below, the method RunBeforeAnyTests()
is called before any tests or setup methods in the NUnit.Tests namespace. The method
RunAfterAnyTests() is called after all the tests in the namespace as well as their
individual or fixture teardowns have completed exection.</p>

<p>Only one SetUpFixture should be created in a given namespace. A SetUpFixture
outside of any namespace provides SetUp and TearDown for the entire assembly.

<h4>Example:</h4>

<div class="code">

<div class="langFilter">
	<a href="javascript:Show('DD1')" onmouseover="Show('DD1')"><img src="img/langFilter.gif" width="14" height="14" alt="Language Filter"></a>
	<div id="DD1" class="dropdown" style="display: none;" onclick="Hide('DD1')">
		<a href="javascript:ShowCS()">C#</a><br>
		<a href="javascript:ShowVB()">VB</a><br>
		<a href="javascript:ShowMC()">C++</a><br>
		<a href="javascript:ShowJS()">J#</a><br>
	</div>
</div>

<pre class="cs">namespace NUnit.Tests
{
  using System;
  using NUnit.Framework;

  [SetUpFixture]
  public class MySetUpClass
  {
    [SetUp]
	RunBeforeAnyTests()
	{
	  // ...
	}

    [TearDown]
	RunAfterAnyTests()
	{
	  // ...
	}
  }
}
</pre>

<pre class="vb">Imports System
Imports Nunit.Framework

Namespace Nunit.Tests

  &lt;TestFixture()&gt; Public Class MySetUpClass
    &lt;SetUp()&gt; Public Sub RunBeforeAnyTests()
	  ' ...
	End Sub
	
	&lt;TearDown()&gt; Public Sub RunAfterAnyTests()
	  ' ...
	End Sub
  End Class
End Namespace
</pre>

<pre class="mc">#using &lt;Nunit.Framework.dll&gt;
using namespace System;
using namespace NUnit::Framework;

namespace NUnitTests
{
  [TestFixture]
  public __gc class MySetUpClass
  {
    [SetUp] public void RunBeforeAnyTests();
	[TearDown] public void RunAfterAnyTests();
  };
}

#include "cppsample.h"

namespace NUnitTests {
  // ...
}
</pre>

<pre class="js">package NUnit.Tests;

import System.*;
import NUnit.Framework.TestFixture;


/** @attribute NUnit.Framework.TestFixture() */
public class MySetUpClass
{
  /** @attribute NUnit.Framework.SetUp() */
  public void RunBeforeAnyTests()
  { /* ... */ }

  /** @attribute NUnit.Framework.TearDown() */
  public void RunAfterAnyTests()
  { /* ... */ }
}
</pre>

</div>
</div>

<!-- Submenu -->
<div id="subnav">
<ul>
<li><a href="index.html">NUnit 2.4.8</a></li>
<ul>
<li><a href="getStarted.html">Getting&nbsp;Started</a></li>
<li><a href="assertions.html">Assertions</a></li>
<li><a href="attributes.html">Attributes</a></li>
<ul>
<li><a href="category.html">Category</a></li>
<li><a href="culture.html">Culture</a></li>
<li><a href="description.html">Description</a></li>
<li><a href="exception.html">Expected&nbsp;Exception</a></li>
<li><a href="explicit.html">Explicit</a></li>
<li><a href="ignore.html">Ignore</a></li>
<li><a href="platform.html">Platform</a></li>
<li><a href="property.html">Property</a></li>
<li><a href="setCulture.html">SetCulture</a></li>
<li><a href="setup.html">Setup</a></li>
<li id="current"><a href="setupFixture.html">SetUp&nbsp;Fixture</a></li>
<li><a href="suite.html">Suite</a></li>
<li><a href="teardown.html">Teardown</a></li>
<li><a href="test.html">Test</a></li>
<li><a href="testFixture.html">Test&nbsp;Fixture</a></li>
<li><a href="fixtureSetup.html">Test&nbsp;Fixture&nbsp;SetUp</a></li>
<li><a href="fixtureTeardown.html">Test&nbsp;Fixture&nbsp;TearDown</a></li>
</ul>
<li><a href="nunit-console.html">Console&nbsp;Runner</a></li>
<li><a href="nunit-gui.html">Gui&nbsp;Runner</a></li>
<li><a href="features.html">Other&nbsp;Features</a></li>
<li><a href="releaseNotes.html">Release&nbsp;Notes</a></li>
<li><a href="samples.html">Samples</a></li>
<li><a href="license.html">License</a></li>
</ul>
</ul>
</div>
<!-- End of Submenu -->


<!-- Standard Footer for NUnit.org -->
<div id="footer">
  Copyright &copy; 2008 Charlie Poole. All Rights Reserved.
</div>
<!-- End of Footer -->

</body>
</html>
